{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.7.3"
    },
    "colab": {
      "name": "Part 05 - Welcome to the Sandbox.ipynb",
      "provenance": [],
      "collapsed_sections": []
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "oaPINWFeyG-7",
        "colab_type": "text"
      },
      "source": [
        "# পর্ব ৫ - স্যান্ডবক্স-এ আমন্ত্রণ\n",
        "\n",
        "পূর্ববর্তী টিউটোরিয়াল গুুলোতে, আমরা আমাদের হুক(hook) এবং কর্মীদের(worker) প্রতিবার নিজেরা কোড করে তৈরি করছিলাম। এটা একটু বিরক্তিকর যখন তুমি শুধুমাত্র ইন্টারফেসগুলো শেখার জন্য কোড নিয়ে খেলা করছো। তাই, এখন থেকে আমরা এই সকল ভেরিয়েবল বিশেষ ধরনের সুবিধাজনক ফাংশনের মাধ্যমে তৈরি করবো।\n",
        "\n",
        "অনুবাদকঃ\n",
        "- মীর মোহাম্মদ জাবের - Twitter: [@jabertuhin](https://twitter.com/jabertuhin)"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "RIQe5e5kyG-_",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import torch\n",
        "import syft as sy\n",
        "sy.create_sandbox(globals())"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "RrJfuQ-zyG_M",
        "colab_type": "text"
      },
      "source": [
        "### স্যান্ডবক্স আমাদের কি দিচ্ছে?\n",
        "\n",
        "আমরা দেখতে পাই, উপরে আমরা বিভিন্ন ধরনের ভার্চুয়াল কর্মী এবং অনেকগুলো টেস্ট ডাটাসেট তৈরি করেছি, যেগুলো বিভিন্ন কর্মীদের মধ্যে ভাগ করে দেয়া হয়েছে। যেন আমরা প্রাইভেসি প্রিজার্ভিং পদ্ধতি অনুশীলন করতে পারি, যেমন- ফেডারেটেড লার্নিং(Federated learning)।\n",
        "\n",
        "আমরা ছয়টি কর্মী তৈরি করেছি...."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Zy24wIcSyG_O",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "workers"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ZSxd2r6NyG_T",
        "colab_type": "text"
      },
      "source": [
        "আমরা বেশকিছু গ্লোবাল ভেরিয়েবলও তৈরি করেছি যা কি-না আমরা এখন ব্যবহার করতে পারি!\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tzPJBdaVyG_V",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "hook"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3IUPlJ-5yG_Z",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "bob"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Kwhnt_6_yG_e",
        "colab_type": "text"
      },
      "source": [
        "#  বিভাগ ২: কর্মী অনুসন্ধান ফাংশনালিটি  \n",
        "রিমোটলি ডাটা সায়েন্সের কাজ করার ক্ষেত্রে একটি গুরুত্বপূর্ণ দিক হচ্ছে - রিমোট মেশিনে ডাটাসেট খুঁজতে পারা। এইভাবে চিন্তা করি যে একটা রিসার্চ ল্যাব কোন হাসপাতালে \"রেডিও\" এর ডাটাসেট খুঁজছে।"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ncELIXZtyG_n",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "x = torch.tensor([1,2,3,4,5]).tag(\"#fun\", \"#boston\", \"#housing\").describe(\"The input datapoints to the boston housing dataset.\")\n",
        "y = torch.tensor([1,2,3,4,5]).tag(\"#fun\", \"#boston\", \"#housing\").describe(\"The input datapoints to the boston housing dataset.\")\n",
        "z = torch.tensor([1,2,3,4,5]).tag(\"#fun\", \"#mnist\",).describe(\"The images in the MNIST training dataset.\")"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "N-kuHCoHyG_r",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "x"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "O5ejCpE2yG_v",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "x = x.send(bob)\n",
        "y = y.send(bob)\n",
        "z = z.send(bob)\n",
        "\n",
        "# this searches for exact match within a tag or within the description\n",
        "results = bob.search([\"#boston\", \"#housing\"])"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "veSajRTryG_1",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "results"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "znEZy-XtyG_7",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "print(results[0].description)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ZSuHB40dyG__",
        "colab_type": "text"
      },
      "source": [
        "# বিভাগ ৩: ভার্চুয়াল গ্রিড\n",
        "\n",
        "গ্রিড হলো কর্মীদের(worker) একটা সমগ্র যা তোমাকে কিছু সুবিধাজনক ফাংশন দিবে\n",
        "যখন তুমি একটি ডাটাসেট একত্রিত করতে চাবে।\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "w5o2FqPHyHAB",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "grid = sy.PrivateGridNetwork(*workers)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "8Y1fcIWeyHAH",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "results = grid.search(\"#boston\")"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "wZowd5jMyHAK",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "boston_data = grid.search(\"#boston\",\"#data\")"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "0S6lv69EyHAR",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "boston_target = grid.search(\"#boston\",\"#target\")"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "o1JKvQa3yHAW",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}